<?php
//require_once( APPLICATION_PATH  . "/papi/services/vo/TaxonomyVO.php" );
//require_once( APPLICATION_PATH  . "/papi/services/vo/BackgroundVO.php" );
/**
 * Obtiene informacion sobre los background
 * 
 * Si necesitamos obtener informacion acerca de los background que tenemos que implenetar
 * este ws.
 *
 */
class PapiWS_Service_Background 
{
	/**
	 * Obtenemos un array de Background VO
	 * 
	 * Este metodo a partir de un category Id devuelve un array de BackgroundVO, con las propiedades
	 * correspondiente
	 * 
	 * @param int $categoryId Id de la categoria padre
	 * @return Array Lista BackgroundVO
	 */
	public function getAll( $categoryId = 0 )
	{
		// try to find result in cache first
		//$cacheId = 'background_all_background';
		//$res = Zend_Registry::get('cache')->load( $cacheId );
		///if (! $res ) {
			try {
	            $client = new Zend_XmlRpc_Client( 
	            	Zend_Registry::get('config')->webservices->drupal->url  
	            );
            	$res = $client->call(
            		'eserivces.view.get', array( 
            			'background_category_item',
						array(),
						( $categoryId != 0 ) ? array($categoryId) : null
            		)
            	);
			} catch ( Exception $e ) {
	            throw new Ext_Exception( $e );
	            return array();
	        }
			//Zend_Registry::get('cache')->save( $res, $cacheId );
		//}
		if( is_array( $res ) ) {
			$result = array();
			foreach( $res as $r ) {
				$result[] = new PapiWS_Model_BackgroundVO( $r );
			}
			return $result;
		}
		return array();
	}
		
	/**
	 * Obtenemos un listado de las catagorias.
	 * 
	 * Los backgrounds estan relacionados con una categoria, con este metodo podemos obtener todo el arbol de 
	 * categorias 
	 * 
	 * @param int $parentId Este es el padre de la categoria en el caso de no enviar nada, el default es 0
	 * @param int $depth Si necesitamos obtener una parte del arbol, en este parametro le indicamos hasta que nivel necesitamos que traiga 
	 * @return Array Lista de Categorias
	 * 
	 */
	public function getAllCategories( $parentId = 0, $depth=1 )
	{
		// try to find result in cache first
		///$cacheId = 'background_all_categories';
		//$res = Zend_Registry::get('cache')->load( $cacheId );
		//if (! $res && Zend_Registry::get('config')->app->use->cache == false ) {
			try {
	            $client = new Zend_XmlRpc_Client( 
	            	Zend_Registry::get('config')->webservices->drupal->url  
	            );
		        $res = $client->call('eserivces.taxonomy.getTree', array(
		        	Zend_Registry::get('config')->drupal->background->tid, 
		        	$parentId,
		        	$depth
		        ));
				$result = array();
		      	foreach( $res as $item ) {
		      		$result[] = new PapiWS_Model_TaxonomyVO( $item );
		      	}
	        } catch (Exception $e) {
	            throw new Ext_Exception( $e );
	            return array();
	        }
			//Zend_Registry::get('cache')->save($res, $cacheId );
		//}
		if( is_array( $result ) ) {
			return $result;
		}
		return array();
	}
}
